package com.pactera.madp.cp.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pactera.madp.cp.api.dto.beta.WorkOriginalDTO;
import com.pactera.madp.cp.api.dto.beta.WorkNewsQueryDTO;
import com.pactera.madp.cp.api.entity.beta.WorkOriginalEntity;
import com.pactera.madp.cp.api.vo.beta.WorkOriginalMidVO;
import com.pactera.madp.cp.api.vo.beta.WorkOriginalVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * @title 原创资讯业务表-业务接口定义
 * @date 2022-06-11
 * @author Deming.Chang
 */
public interface WorkOriginalService extends IService<WorkOriginalEntity> {

    /**
     * 获取资讯列表（资讯列表展示数据）
     * @return
     */
    Page<WorkOriginalVO> getWorkOriginalList(Page page, WorkOriginalDTO dto);

    /**
     * 资讯上架（资讯列表展示数据）
     * @return
     */
    Boolean putOnWorkOriginal(String newsKey);

    /**
     * 资讯撤销（资讯列表展示数据）
     * @return
     */
    Boolean revokeWorkOriginal(String newsKey);

    /**
     * 资讯下架（资讯列表展示数据）
     * @return
     */
    Boolean downWorkOriginal(String newsKey);

    /**
     * 资讯审批（资讯列表展示数据）
     * @return
     */
    Boolean ApprovalWorkOriginal(WorkOriginalEntity entity,String newsKey, String opinion, Integer state);

    /**
     * 新增（资讯列表展示数据）
     * @return
     */
    Boolean saveInfo(WorkOriginalDTO dto);

    /**
     * 修改（资讯列表展示数据）
     * @return
     */
    Boolean updateInfo(WorkOriginalDTO dto);

    /**
     * 删除（资讯列表展示数据）
     * @return
     */
    Boolean deleteInfo(String newsKey);

    /**
     * 获取最近两条策略研究（原创）数据
     * @return 返回最近两条策略研究（原创）数据
     */
    List<WorkOriginalMidVO> getLatestTwoBeta();

    /**
     * 获取最近两条行内新闻（原创）数据
     * @return 返回最近两条行内新闻（原创）数据
     */
    List<WorkOriginalMidVO> getLatestTwoBank();

    /**
     * 获取指定资讯主键的原创资讯
     * @param newsKey    资讯业务主键
     * @return 返回原创资讯详细信息
     */
    WorkOriginalVO getByNewsKey(String newsKey);

    /**
     * 原创资讯分页查询
     * @param page      分页条件
     * @param dto       查询条件
     * @return
     */
    IPage<WorkOriginalVO> getPage(Page page, WorkNewsQueryDTO dto);

}
